/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hero.hook;

import hero.interfaces.BnNodeLocal;
import hero.interfaces.BnNodePropertyValue;
import hero.interfaces.BnNodeValue;
import hero.interfaces.Constants;
import hero.interfaces.ProjectSession;
import hero.interfaces.ProjectSessionHome;
import hero.interfaces.ProjectSessionUtil;
import hero.interfaces.UserSession;
import hero.interfaces.UserSessionHome;
import hero.interfaces.UserSessionUtil;
import hero.util.HeroException;
import hero.util.HeroHookException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.CreateException;
import javax.naming.NamingException;

/**
 *
 * @author kabad
 */
public class TerminarTiempoConfirmacionEstudiante implements hero.hook.NodeHookI {

    public TerminarTiempoConfirmacionEstudiante() {
    }

    public String getMetadata() {
        return Constants.Nd.ONDEADLINE;
    }

    public void create(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void afterTerminate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onCancel(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void anticipate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onDeadline(Object b, BnNodeLocal n) throws HeroHookException {
        System.out.println("Terminar tiempo confirmacion estudiante");
        ProjectSessionHome prjHome;
        BnNodeValue actividad;
        UserSession usrSession;
        UserSessionHome usrHome;
        
        System.out.println("xxSe termino el periodo de confirmacion de estudiante, instancia:" + n.getBnProject().getName());
        BnNodePropertyValue formulario;
        try {
            String nombreActividad = "Confirmacion del Estudiante";
            usrHome = UserSessionUtil.getHome();
            usrSession = usrHome.create();

            prjHome = (ProjectSessionHome) ProjectSessionUtil.getHome();
            ProjectSession prjSession = prjHome.create();

            actividad = usrSession.getNode(n.getBnProject().getName(), nombreActividad);
            prjSession.initProject(n.getBnProject().getName());

            prjSession.setNodeType(nombreActividad, hero.interfaces.Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
            if (actividad != null &&
                    (actividad.getState() == hero.interfaces.Constants.Nd.READY ||
                    actividad.getState() == hero.interfaces.Constants.Nd.ANTICIPABLE)) {
               
                usrSession.startActivity(n.getBnProject().getName(), nombreActividad);
                System.out.println("startActivity confirmacion estudiante");
            }
       } catch (IOException ex) {
            Logger.getLogger(TerminarTiempoConfirmacionEstudiante.class.getName()).log(Level.SEVERE, null, ex);
        }catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (HeroException ex) {
            ex.printStackTrace();
        }

    }

    public void afterStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onReady(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeTerminate(Object b, BnNodeLocal n) throws HeroHookException {
    }
}
